package mediator.source;

/**
 * 中介者接口
 * 中介者模式：
 * mediator的出现减少了各个Colleague的耦合，
 * 使得可以独立地改变和复用各个Colleague类和Mediator
 *
 * 由于把对象如何协作进行了抽象，将中介作为一个独立的概念将其封装在一个对象中
 * 这样关注的对象就从对象各自本身的行为转移到他们之间的交互上
 *
 * 但是：
 * 由于具体中介类ConcreteMediator控制了集中化，于是就把交互复杂性变成了中介者的复杂性
 *
 * 中介模式一般应用于一组对象已经定义良好但是以复杂的方式进行通信的场合
 * 以及想要定制一个分布在多个类中的行为，而又不想生成太多的子类的场合
 *
 * 例如计算器程序，它有菜单控件、文本控件、多个按钮控件和一个Form窗体
 * 每个控件都有自己的事件，而事件的执行都是在From的代码中完成
 * 每个控件之间并不知道对方存在，通过Form窗体进行交互，减少耦合
 *
 *
 *
 * @author Chen Guang
 * @date 2019/4/24 0024 下午 16:41
 */
public interface Mediator {
    void sendMsg(String msg, Colleague colleague);
}
